package com.sunyur.tailor.channel.service.inner.contract.model;

import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Description 合同详情
 * @Author XuHui
 * @Date 2022/4/30 21:25
 * @Version 1.0
 */
@Data
public class ContractInfoModel {
    /**
     * 合同编号
     */
    private String contractCode;
    /**
     * 合同名称
     */
    private String contractName;
    /**
     * 合同生效时间
     */
    private Date effectiveTime;
    /**
     * 合同失效时间
     */
    private Date expireTime;
    /**
     * 合同分类编码
     */
    private String contractCategoryCode;
    /**
     * 合同分类名称
     */
    private String contractCategoryName;
    /**
     * 合同类型（0-普通合同,1-框架合同,2-单次采购合同）
     */
    private Integer contractType;
    /**
     * 合同总金额 (非框架合同必填)
     */
    private BigDecimal contractAmount;
    /**
     * 币种（具体类型待定）
     */
    private String currencyCode;
    /**
     * 采购品类
     */
    private String purchaseCategoryCode;
    /**
     * 采购组织编码
     */
    private String purchaseOrgCode;
    /**
     * 项目编码
     */
    private String projectCode;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 合同状态
     * 草稿：1010
     * 审批：2010
     * 审批驳回：3010
     * 审批撤回：3020
     * 待采购商签署：4010
     * 待供应商签署：4015
     * 采购商驳回：4020
     * 供应商驳回：4025
     * 待生效：5010
     * 执行中：6010
     * 已失效：7010
     */
    private String contractStatus;
    /**
     * 合同正文附件URL(一个)
     */
    private ContractAttachment contactPhotocopyFile;
    /**
     * 合同其他附件（多个）
     */
    private List<ContractAttachment> otherFile;
    /**
     * 盖章顺序（1：供应商先盖章，2：采购商先盖章）
     */
    private String stampOrder;
    /**
     * 盖章类型（1：公章、2：合同章、3：法人章、4：手签章）
     */
    private String stampType;
    /**
     * 合同说明
     */
    private String contractRemark;
    /**
     * 付款条款代码
     */
    private String paymentClauseCode;
    /**
     * 付款条款名称
     */
    private String paymentClauseName;
    /**
     * 付款条款说明
     */
    private String paymentClauseDesc;
    /**
     * 付款方式
     */
    private String paymentMethod;
    /**
     * 阶段类型（0：付款比例，1：付款金额）
     */
    private String stageType;
    /**
     * 主从合同（0：主合同，1：从合同）
     */
    private Integer isMaster;
    /**
     * 主合同编码
     */
    private String masterContractCode;
    /**
     * 发票类型(1-增值税专票,2-增值税普票)
     */
    private Integer invoiceType;
    /**
     * 签署方式（0-纸质盖章，1-电子签章）
     */
    private String signWay;
    /**
     * 采购商签约主体
     */
    private List<PurchaserSubjectList> purchaserSubjectList;
    /**
     * 供应商签约主体
     */
    private SupplierSubject supplierSubject;
    /**
     * 第三方签约主体
     */
    private List<ThirdPartySupplierSubjectList> thirdPartySupplierSubjectList;

    /**
     * 创建人工号
     */
    private String creatorWorkNumber;

    @Data
    public static class PurchaserSubjectList {
        /**
         * 签约主体编码
         */
        private String signSubjectCode;
        /**
         * 签署人
         */
        private String signer;
        /**
         * 签署人联系方式
         */
        private String signerTel;
        /**
         * 签署时间
         */
        private Date signTime;
    }

    /**
     * 供应商签约主体
     */
    @Data
    public static class SupplierSubject {
        /**
         * 签约主体编码
         */
        private String signSubjectCode;
        /**
         * 签署人
         */
        private String signer;
        /**
         * 签署人联系方式
         */
        private String signerTel;
        /**
         * 签署时间
         */
        private Date signTime;
    }

    @Data
    public static class ThirdPartySupplierSubjectList {
        /**
         * 签约主体编码
         */
        private String signSubjectCode;
        /**
         * 签署人
         */
        private String signer;
        /**
         * 签署人联系方式
         */
        private String signerTel;
        /**
         * 签署时间
         */
        private Date signTime;
    }
}

